package demo;

import com.jfinal.config.*;
import com.jfinal.template.Engine;

/**
 * 基于JFinal的web项目需要创建一个继承自JFinalConfig类的子类，该类用于对整个web项目进行配置。

 JFinalConfig子类需要实现六个抽象方法，如下所示：
 */
public class DemoConfig extends JFinalConfig {
    @Override
    public void configConstant(Constants constants) {
        //  在开发模式下，JFinal会对每次请求输出报告，如输出本次请求的URL、Controller、Method以及请求所携带的参数。
        /**
         JFinal-3.4 action report -------- 2018-06-20 10:04:00 --------------------------
         Url         : GET /hello
         Controller  : demo.HelloController.(HelloController.java:1)
         Method      : index
         --------------------------------------------------------------------------------
         *
         */
        constants.setDevMode(true);
        //设置字符编码UTF8
        constants.setEncoding("utf-8");
        /**
         * urlPara是为了能在url中携带参数值，urlPara可以在一次请求中同时携带多个值，
         * JFinal默认使用减号“-”来分隔多个值（可通过constants. setUrlParaSeparator(String)设置分隔符）
         */
        constants.setUrlParaSeparator(",");

    }

    @Override
    public void configRoute(Routes routes) {
        /**
         *  Routes.setBaseViewPath(baseViewPath)方法用于为该Routes
         *  内部的所有Controller设置视图渲染时的基础路径，
         *  该基础路径与Routes.add(…, viewPath)方法传入的viewPath以及
         *  Controller.render(view) 方法传入的 view 参数联合组成最终的视图路径，规则如下：

         finalView = baseViewPath + viewPath + view
         参数viewPath是指该Controller返回的视图的相对路径,只有在render("视图名")
         注意：当view以 “/” 字符打头时表示绝对路径，baseViewPath 与 viewPath 将被忽略。
         */
        routes.setBaseViewPath("/view");
//        System.out.println("configRoute");
        //routes.add("/", HelloController.class);
        //配置路由映射处理器 /hello 默认访问HelloController中的index方法
        //  /hello/aaa 访问aaa()方法
//        routes.add("/hello",HelloController.class);
        //参数viewPath是指该Controller返回的视图的相对路径

        routes.add("/hello",HelloController.class,"/haha");
    }

    @Override
    public void configEngine(Engine engine) {

    }

    @Override
    public void configPlugin(Plugins plugins) {

    }

    @Override
    public void configInterceptor(Interceptors interceptors) {

    }

    @Override
    public void configHandler(Handlers handlers) {

    }
}
